/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionnaire;

import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import modeles.Film;

/**
 *
 * @author MAZID
 */
@Stateless
@LocalBean
public class GestionnairePanier {
    @PersistenceContext
     EntityManager em;
     Collection<FilmPanier> contenuPanier = new ArrayList<FilmPanier>();
     FilmPanier unFilmPanier = new FilmPanier();
     private double tva = 0.186;
    
    
    //fonction  d'ajout d'un film avec la quantité dans le panier qui sera utilisé par la fonction d'ajout
    public void ajoutFilmQte(int id, int q){
        Film film = em.find(Film.class, id);
        FilmPanier fp = rechercheFilmPanier(id);
        if(fp == null){
            contenuPanier.add(new FilmPanier(film,q));
        }
        else{
            fp.setQuantite(fp.getQuantite()+q);
        }
        
        
    }
    
    //fonction de creation d'un film pour ajouter au panier
    public void ajouterFilm(int id){
        ajoutFilmQte(id, 1);
    }
    
    //fonction de supppression du film dans le panier 
    public void supprimerFilmPanier(int id){
        FilmPanier fp = rechercheFilmPanier(id);
        contenuPanier.remove(fp);
    }
    //fonction de recherche dans la liste des elements du panier celui qui correspond au film 
    //qui a pour id: id, renvoie null si l'element n'existe pas 
    //
    public FilmPanier rechercheFilmPanier(int id){
        for (FilmPanier element: contenuPanier){
            if(element.getFilmPanier().getId()==id){
                return element;
            }
           
        }
        return null;
    } 
    
    public void modifierQteFilm(int id, int qte){
        FilmPanier fp = rechercheFilmPanier(id);
        fp.setQuantite(qte);
    }
//    public int getQteFilm(int id){
//        int nbFilm = 0;
//        for(FilmPanier fp:contenuPanier){
//            fp=rechercheFilmPanier(id);
//        }
//        FilmPanier fp = rechercheFilmPanier(id);
//        fp.setQuantite(qte);
//    }
    //fonction de qui permet d'incrementer la quantité des films dans le panier
    public void incrementQteFilm(int id ){
        FilmPanier film = rechercheFilmPanier(id);
        film.setQuantite(film.getQuantite()+1);
    }
    public void incrementQteFilm(int id, int qte ){
        FilmPanier fp = rechercheFilmPanier(id);
        fp.setQuantite(fp.getQuantite()+qte);
    }
    //fonction qui permet de decrementer la quantité d'un film dans le panier
    public void decrementeQteFilm(int id){
        FilmPanier film = rechercheFilmPanier(id);
        film.setQuantite(film.getQuantite()-1);
        if(film.getQuantite()<=0){
            contenuPanier.remove(film);
        }
    }
    
    //fonction qui calcul le prix total des d'un film contenu dans le panier
    public double calculPrixTotal(){
        double prixTotalPanier = 0;
        for(FilmPanier element:contenuPanier){
            prixTotalPanier+=(element.getFilmPanier().getPrix()*element.getQuantite());
        }
        return prixTotalPanier;
    }
    //fonction qui calcul le prix total des d'un film contenu dans le panier avec TVA
    public double calculPrixTotalTVA(){
        double prixTotalPanierTTC = 0;
        for(FilmPanier element:contenuPanier){
            prixTotalPanierTTC+=(element.getFilmPanier().getPrix()*element.getQuantite()*tva);
        }
        return prixTotalPanierTTC;
    }
    
    //fonction qui calcul le prix total par film se trouvant dans le panier
    public double calculPrixTotalParFilm(){
        double prixTotalFilm = 0;
        prixTotalFilm+=(unFilmPanier.getFilmPanier().getQuantite()*unFilmPanier.getFilmPanier().getPrix());
        return prixTotalFilm;
    }
    //fonction qui calcul le prix total par film se trouvant dans le panier avec TVA
    public double calculPrixTotalParFilmTVA(){
        double prixTotalFilm = 0;
        prixTotalFilm+=unFilmPanier.getFilmPanier().getQuantite()*unFilmPanier.getFilmPanier().getPrix()*tva;
        return prixTotalFilm;
    }
    //fonction qui retourne le nombre de produit qui se trouve dans le panier
    public int getNbProduit(){
        int nbFilm = 0;
        for(FilmPanier fp:contenuPanier){
            nbFilm +=fp.getQuantite();
        }
        return nbFilm;
    }
    // fonction de persistance de l'objet
    public void persist(Object objet){
        em.persist(objet);
    }
    //getter de contenu du panier
    public Collection<FilmPanier> getContenuPanier() {
        return contenuPanier;
    }
    // fonction qui permet d'afficcher l'ensemble du contenu du panier
    // affichage sous forme de tableau
    
}

